package Atop100.listNode;

import listNodePractice.ListNode;

public class Class45 {

    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dumpy = new ListNode(-1);
        dumpy.next=head;
        ListNode pre=dumpy;
        ListNode end=dumpy;
        while (end.next!=null){
            for (int i = 0; i < k&&end!=null; i++) {
                end=end.next;
            }
            if (end==null) {
                break;
            }

            ListNode start=pre.next;
            ListNode next=end.next;
            end.next=null;
            ListNode reverse = reverse(start);
            pre.next=reverse;
            //TODO:2023/10/27  此时start的已经成为翻转后的最后一个节点啦
            start.next=next;
            //TODO:2023/10/27 重置pre end
            pre=start;
            end=pre;
        }
        return  dumpy.next;
    }


    public  ListNode   reverse(ListNode  head){
        ListNode  pre=null;
        ListNode cur=head;
        while (cur!=null){
            ListNode next = cur.next;
            cur.next=pre;
            pre=cur;
            cur=next;
        }
        return  pre;
    }


}
